package untils;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

/**
 * The type Utils.
 *
 * @author user
 */
public class Utils {
    /**
     * The constant HEIGHT.
     */
    public static final Integer HEIGHT =7;
    /**
     * The constant WIGHT.
     */
    public static final Integer WIGHT =7;
    /**
     * The constant RAND_INTEGER.
     */
    public static final Integer RAND_INTEGER = 200;
    /**
     * The constant RAND_STARTING.
     */
    public static final String RAND_STARTING = "2021-11-01";
    /**
     * The constant RAND_ENDING.
     */
    public static final String RAND_ENDING = "2021-12-01";


    /**
     * The enum Sex.
     */
    public enum Sex {
        /**
         * 女 sex.
         */
        女,
        /**
         * 未设定值 sex.
         */
        未设定值,
        /**
         * 男 sex.
         */
        男;}

    /**
     * 随机生成字符串
     *
     * @param length 生成的长度
     * @return 返回生成的字符串 string
     */
    public static String getRandomString(int length){
        String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        Random random=new Random();
        StringBuffer sb=new StringBuffer();
        for(int i=0;i<length;i++){
            int number=random.nextInt(62);
            sb.append(str.charAt(number));
        }
        return sb.toString();
    }

    /**
     * 返回随机生成的时间
     *
     * @param beginDate 开始时间
     * @param endDate   结束时间
     * @return 返回生成的时间 date
     */
    public static Date randomDate(String beginDate, String endDate) {
        try {
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            Date start = format.parse(beginDate);
            Date end = format.parse(endDate);
            if (start.getTime() >= end.getTime()) {
                return null;
            }
            long date = random(start.getTime(), end.getTime());

            return new Date(date);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 返回随机生成的 long 数据类型的数据，用于生成随机的时间
     * @param begin 开始值
     * @param end 结束值
     * @return 返回随机生成的 long 数据类型的数据
     */
    private static long random(long begin, long end) {
        long rtn = begin + (long) (Math.random() * (end - begin));
        if (rtn == begin || rtn == end) {
            return random(begin, end);
        }
        return rtn;
    }
}
